home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 25 / CU Amiga Magazine's Super CD-ROM 25 (1998)(EMAP Images)(GB)(Track 1 of 2)[!][issue 1998-08].iso / CUCD / Utilities / SmartFilesystem / Sources / SetCache / setcache.c
Encoding:
C/C++ Source or Header  |  1998-06-14  |  1.2 KB  |  49 lines

  1. #include <dos/dos.h>
  2. #include <dos/dosextens.h>
  3. #include <proto/dos.h>
  4. #include <proto/exec.h>
  5.  
  6. #define ACTION_SET_CACHE   (15777217)
  7.  
  8. LONG main() {
  9.   struct RDArgs *readarg;
  10.   UBYTE template[]="DEVICE/A,LINES/A/N,READAHEAD/A/N\n";
  11.  
  12.   struct {char *name;
  13.           ULONG *lines;
  14.           ULONG *readahead;} arglist={NULL};
  15.  
  16.   if((DOSBase=(struct DosLibrary *)OpenLibrary("dos.library",37))!=0) {
  17.     if((readarg=ReadArgs(template,(LONG *)&arglist,0))!=0) {
  18.       struct MsgPort *msgport;
  19.       struct DosList *dl;
  20.  
  21.       dl=LockDosList(LDF_DEVICES|LDF_READ);
  22.       if((dl=FindDosEntry(dl,arglist.name,LDF_DEVICES))!=0) {
  23.         LONG errorcode;
  24.  
  25.         msgport=dl->dol_Task;
  26.         UnLockDosList(LDF_DEVICES|LDF_READ);
  27.  
  28.         if((errorcode=DoPkt(msgport,ACTION_SET_CACHE,*arglist.lines,*arglist.readahead,0,0,0))==DOSFALSE) {
  29.           PrintFault(IoErr(),"error while setting new cache size");
  30.         }
  31.         else {
  32.           LONG bytes;
  33.  
  34.           bytes=IoErr();
  35.  
  36.           VPrintf("New cache size set.  Allocated %ld bytes of memory.\n",&bytes);
  37.         }
  38.       }
  39.       else {
  40.         UnLockDosList(LDF_DEVICES|LDF_READ);
  41.       }
  42.  
  43.       FreeArgs(readarg);
  44.     }
  45.     CloseLibrary((struct Library *)DOSBase);
  46.   }
  47.   return(0);
  48. }
  49.